Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

DBSimple / MySQL / _performEscape. Проблема с апострофами (Xeningem)
Author Message
Xeningem
Заглянувший



Joined: 19 Jul 2007
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Mon Jul 23, 2007 10:08 am (написано за 5 минут 32 секунды)
   Post subject: DBSimple / MySQL / _performEscape. Проблема с апострофами
Reply with quote

Проблема заключается в том, что при попытке использовать DBSimple столкнулся с проблемой - переменные экранируются не в стиле MySQL(`table`), а обычными апострофами('table'). После недолгих поисков нашёл в Mysql.php следующий код
Code (php): скопировать код в буфер обмена
function _performEscape($s, $isIdent=false)
    {
                  
        if (!$isIdent) {
            return "'" . mysql_real_escape_string (www.php.net/mysql_real_escape_string)($s, $this->link) . "'";
        } else {
                         return "`" . str_replace (www.php.net/str_replace)('`', '``', $s) . "`";
                       
        }
    }
Заменил (апостроф на `), и получил следующий код.
Code (php): скопировать код в буфер обмена
function _performEscape($s, $isIdent=false)
    {
        if (!$isIdent) {
        return "`" . mysql_real_escape_string (www.php.net/mysql_real_escape_string)($s, $this->link) . "`";
        }
        else
        {
         return "`" . str_replace (www.php.net/str_replace)('`', '``', $s) . "`";
        }
    }
После чего запросы стали выполняться. Версия из последнего архива.
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Tue Jul 24, 2007 5:41 am (спустя 19 часов 32 минуты; написано за 38 секунд)
   Post subject:
Reply with quote

судя по всему, правильнее всё же так:
Code (any language): скопировать код в буфер обмена
function _performEscape($s, $isIdent=false)
    {
        if (!$isIdent) {
            return "`" . str_replace('`', '``', $s) . "`";
        }
        else
        {
            return "`" . mysql_real_escape_string($s, $this->link) . "`";
        }
    }
Back to top
Guest






Карма: 388
   поощрить/наказать


PostPosted: Tue Jul 24, 2007 5:42 am (спустя 52 секунды; написано за 28 секунд)
   Post subject:
Reply with quote

тьфу, блин, так:
Code (any language): скопировать код в буфер обмена
function _performEscape($s, $isIdent=false)
    {
        if (!$isIdent) {
            return "`" . str_replace('`', '``', $s) . "`";
        }
        else
        {
            return "'" . mysql_real_escape_string($s, $this->link) . "'";
        }
    }
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Jul 24, 2007 5:37 pm (спустя 11 часов 55 минут; написано за 14 секунд)
   Post subject:
Reply with quote

Xeningem
думаю, Вы просто не тот плейсхолдер использовали
Back to top
View user's profile Send private message
Xeningem
Заглянувший



Joined: 19 Jul 2007
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Tue Jul 24, 2007 7:18 pm (спустя 1 час 41 минуту; написано за 3 минуты 21 секунду)
   Post subject:
Reply with quote

2Maus - Подтверждаю. Но кое-что меня безусловно смущает, например то, что сейчас я пишу код следующего вида:
Code (php): скопировать код в буфер обмена
$table="table";
$DB->query("INSERT INTO ?# (?#) VALUES (?a)", array (www.php.net/array)($table),array_keys (www.php.net/array_keys)($value),array_values (www.php.net/array_values)($value));
И как обойти "array($table)" - понятия не имею. Как-то нелогично получается, но поскольку библиотека не вчера появилась, видимо дело в руках.
p.s. Файл я откатил к исходному виду, теперь пишу везде array(). Н
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Wed Jul 25, 2007 8:28 am (спустя 13 часов 9 минут; написано за 2 минуты 3 секунды)
   Post subject:
Reply with quote

Xeningem
что-то и впрямь странное. Про библиотеку вообще-то есть обсуждение в Конструкторе - может, этот момент там освещён? Выглядит и впрямь странновато.
Я б с удобвольствием и сам посмотрел - но туго со свободным временем...
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML